'use strict';

// 建立连接的时候的时候，用来判断认证授权的，比如说需要登录，你就要根据用户提过来的用户ID，来判断
// 用户有没有资格加入聊天
module.exports = (app) => {
  return async (ctx, next) => {

    const { app, socket, logger } = ctx;
    const id = socket.id;
    const nsp = app.io.of('/');
    const query = socket.handshake.query;
    const { userId } = query;
    const onlineUsers = app.config.onlineUsers;


    //监听新用户加入
    socket.on('chat', function (obj) {
      //将新加入用户的唯一标识当作socket的名称，后面退出的时候会用到
      socket.name = obj.id;
      //检查在线列表，如果不在里面就加入
      if (!onlineUsers.hasOwnProperty(obj.id)) {
        onlineUsers[obj.id] = obj.name;
      }
      //向所有客户端广播用户加入
      socket.broadcast.emit('login', obj);
      var arr = Object.keys(onlineUsers);
    });

    await next();
  };
};
